/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.sistemafacturacion.gco.ngc;


import com.jjsoft.sistemafacturacion.gco.dao.GenericController;
import com.jjsoft.sistemafacturacion.gco.mdl.Proveedor;
import com.jjsoft.sistemafacturacion.gco.util.AtributoInvalidoException;
import com.jjsoft.sistemafacturacion.gco.util.IdDuplicadoException;
import com.jjsoft.sistemafacturacion.gco.util.ProveedorValidadorException;
import com.jjsoft.sistemafacturacion.gco.util.ValidarAtributoUtil;
import java.util.List;

/**
 *
 * @author FernandoBac
 */
public class ProveedorManager {
    GenericController<Proveedor> controladorProveedor = new GenericController<Proveedor>();
    public void crearProveedor(Proveedor proveedor) throws ProveedorValidadorException
    {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Proveedor", proveedor);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre", proveedor.getNombre());
            ValidarAtributoUtil.validarStringNuloVacio("Ciudad", proveedor.getCiudad());
            ValidarAtributoUtil.validarStringNuloVacio("Direccion", proveedor.getDireccion());
            ValidarAtributoUtil.validarStringNuloVacio("Telefono", proveedor.getTelefono());
            if(controladorProveedor.create(proveedor).equals("1"))
            {
                throw new ProveedorValidadorException(new IdDuplicadoException("Ya existe un cliente con ese número de identificación",proveedor.getIdproveedor()));
            }
        } catch (AtributoInvalidoException ex) {
            throw new ProveedorValidadorException(ex);
        } 
    }
    public void editarProveedor(Proveedor proveedor) throws ProveedorValidadorException
    {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Proveedor", proveedor);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre", proveedor.getNombre());
            ValidarAtributoUtil.validarStringNuloVacio("Ciudad", proveedor.getCiudad());
            ValidarAtributoUtil.validarStringNuloVacio("Direccion", proveedor.getDireccion());
            ValidarAtributoUtil.validarStringNuloVacio("Telefono", proveedor.getTelefono());
            controladorProveedor.edit(proveedor);
        } catch (AtributoInvalidoException ex) {
            throw new ProveedorValidadorException(ex);
        }  catch (Exception ex) {
            throw new ProveedorValidadorException("Error desconocido");
        }
    }
    public List<Proveedor> listarProveedores()
    {
        return controladorProveedor.findWhere(new Proveedor(), "estado=0");
    }
    public List<Proveedor> listarProveedores(String criterio)
    {
        List<Proveedor> listaClientes=controladorProveedor.findHibernateSearch(new Proveedor(),criterio, "nombre","ciudad");
        for(int i=listaClientes.size();i>0;i--)
        {
            if(listaClientes.get(i-1).getEstado()==1)
                listaClientes.remove(i-1);
            
        }
        return listaClientes;
    }
    
    
    public void eliminarProveedor(Proveedor proveedor)
    {
        proveedor.setEstado(1);
        try {
            controladorProveedor.edit(proveedor);
        } catch (Exception ex) {
            ex.printStackTrace();
        } 
    }
}
